package kg.aibek.projecteuler.p51;

import java.math.BigInteger;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

public class Problem62 {
	public void solve() {
		int n = 345;

		Map<String, Set<Integer>> map = new HashMap<String, Set<Integer>>();

		while (true) {
			BigInteger bi = BigInteger.valueOf(n);
			String key = getOrderedString(bi.pow(3).toString());

			if (map.get(key) == null) {
				map.put(key, new TreeSet<Integer>());
			}

			map.get(key).add(n);
			if (map.get(key).size() > 4) {
				for (int i : map.get(key)) {
					System.out.println(BigInteger.valueOf(i).pow(3));
					break;
				}
				break;
			}
			n++;
		}
	}

	public String getOrderedString(String str) {
		char[] chs = str.toCharArray();
		Arrays.sort(chs);
		StringBuilder sb = new StringBuilder();
		sb.append(chs);
		return sb.toString();
	}

	public static void main(String[] args) {
		Problem62 p = new Problem62();
		p.solve();
	}
}
